Programmable integrated circuits are a type of integrated circuit that can be configured by a user to implement custom logic functions. In a typical scenario, a logic designer uses computer-aided design (CAD) tools to design a custom logic circuit. When the design process is complete, the CAD tools generate configuration data. The configuration data is loaded into a programmable integrated circuit to configure the device to perform desired logic functions.
In a typical system, a programmable integrated circuit, memory devices, and other electronic components are mounted on a printed circuit board. The programmable integrated circuit includes memory interface circuitry that is used to relay data back and forth between the programmable integrated circuit and the memory devices (i.e., the memory interface circuitry is used to read data from and write data into the memory devices).
With each new generation of transistor technology, memory circuits are becoming operated at ever-increasing speeds. However, programmable integrated circuits have been unable to match the increases in clock speeds of memory circuits. For example, double-data-rate random access memory three (DDR3) and double-data-rate random access memory four (DDR4) can operate at speeds of 800 MHz and 1600 MHz, whereas programmable integrated circuits may operate at reduced speeds of about 200-400 Mhz.
In some scenarios, programmable integrated circuits have been provided with dedicated memory controllers that interface with memory circuits. The dedicated memory controllers are not programmable and are therefore capable of operating at speeds comparable to the memory circuits. However, dedicated memory controllers used in conventional programmable integrated circuits require dedicated routing paths for conveying data between the dedicated memory controllers and other circuitry on the programmable integrated circuits. These dedicated routing paths can occupy a disproportionate amount of the limited circuit area available on the programmable integrated circuit (e.g., area that then cannot be used for other circuitry). For example, the area occupied by dedicated routing paths can be 3-5% or more of the available area on a programmable integrated circuit.
In some scenarios, programmable integrated circuits are provided with modular physical interfaces (i.e., signal driver circuitry) that can be stitched together for use with a programmable memory controller (i.e., a memory controller implemented using programmable logic and sometimes referred to as a soft memory controller). However, the soft memory controller is incapable of operating at speeds comparable to memory circuit speeds, because the soft memory controller is implemented using programmable logic.